//
// Created by zengyuhao on 25-4-29.
//

#ifndef ZORAL_PLAN_DATA_STRUCTURE_H
#define ZORAL_PLAN_DATA_STRUCTURE_H

#include <vector>

namespace ZORAL
{
    struct JointPlannerProperties
    {
        double pos_start;
        double pos_end;
        double vel_lim = 0.0;
        double acc_lim = 0.0;
        double jerk_lim = 0.0;
        double time_lim = 0.0;
    };

    enum PlannerType
    {
        MOVE_JOINT = 1,
        MOVE_POSE = 2,
        MOVE_LINE = 3,
        MOVE_NULLSPACE = 4,
        MOVE_CIRCLE = 5,
    };

    enum TrajSolveType
    {
        FIVE_POLY_INTERP = 1,
    };

    struct PlannerProperties
    {
        TrajSolveType traj_solve_type = TrajSolveType::FIVE_POLY_INTERP;
        std::vector<double> max_velocity;
        std::vector<double> max_acceleration;
        std::vector<double> max_jerk;
        double min_move_time;
        double sample_rate;
    };

} // namespace ZORAL


#endif // ZORAL_PLAN_DATA_STRUCTURE_H
